package com.qipay.baas.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class SpChannelRuleExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    private Integer limit;

    private Integer offset;

    public SpChannelRuleExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    public Integer getOffset() {
        return offset;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        protected void addCriterionForJDBCTime(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Time(value.getTime()), property);
        }

        protected void addCriterionForJDBCTime(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Time> timeList = new ArrayList<java.sql.Time>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                timeList.add(new java.sql.Time(iter.next().getTime()));
            }
            addCriterion(condition, timeList, property);
        }

        protected void addCriterionForJDBCTime(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Time(value1.getTime()), new java.sql.Time(value2.getTime()), property);
        }

        public Criteria andIdIsNull() {
            addCriterion("`id` is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("`id` is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Long value) {
            addCriterion("`id` =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Long value) {
            addCriterion("`id` <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Long value) {
            addCriterion("`id` >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Long value) {
            addCriterion("`id` >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Long value) {
            addCriterion("`id` <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Long value) {
            addCriterion("`id` <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Long> values) {
            addCriterion("`id` in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Long> values) {
            addCriterion("`id` not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Long value1, Long value2) {
            addCriterion("`id` between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Long value1, Long value2) {
            addCriterion("`id` not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andSpIdIsNull() {
            addCriterion("`sp_id` is null");
            return (Criteria) this;
        }

        public Criteria andSpIdIsNotNull() {
            addCriterion("`sp_id` is not null");
            return (Criteria) this;
        }

        public Criteria andSpIdEqualTo(Long value) {
            addCriterion("`sp_id` =", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdNotEqualTo(Long value) {
            addCriterion("`sp_id` <>", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdGreaterThan(Long value) {
            addCriterion("`sp_id` >", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdGreaterThanOrEqualTo(Long value) {
            addCriterion("`sp_id` >=", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdLessThan(Long value) {
            addCriterion("`sp_id` <", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdLessThanOrEqualTo(Long value) {
            addCriterion("`sp_id` <=", value, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdIn(List<Long> values) {
            addCriterion("`sp_id` in", values, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdNotIn(List<Long> values) {
            addCriterion("`sp_id` not in", values, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdBetween(Long value1, Long value2) {
            addCriterion("`sp_id` between", value1, value2, "spId");
            return (Criteria) this;
        }

        public Criteria andSpIdNotBetween(Long value1, Long value2) {
            addCriterion("`sp_id` not between", value1, value2, "spId");
            return (Criteria) this;
        }

        public Criteria andChannelTypeIsNull() {
            addCriterion("`channel_type` is null");
            return (Criteria) this;
        }

        public Criteria andChannelTypeIsNotNull() {
            addCriterion("`channel_type` is not null");
            return (Criteria) this;
        }

        public Criteria andChannelTypeEqualTo(Byte value) {
            addCriterion("`channel_type` =", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeNotEqualTo(Byte value) {
            addCriterion("`channel_type` <>", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeGreaterThan(Byte value) {
            addCriterion("`channel_type` >", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeGreaterThanOrEqualTo(Byte value) {
            addCriterion("`channel_type` >=", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeLessThan(Byte value) {
            addCriterion("`channel_type` <", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeLessThanOrEqualTo(Byte value) {
            addCriterion("`channel_type` <=", value, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeIn(List<Byte> values) {
            addCriterion("`channel_type` in", values, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeNotIn(List<Byte> values) {
            addCriterion("`channel_type` not in", values, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeBetween(Byte value1, Byte value2) {
            addCriterion("`channel_type` between", value1, value2, "channelType");
            return (Criteria) this;
        }

        public Criteria andChannelTypeNotBetween(Byte value1, Byte value2) {
            addCriterion("`channel_type` not between", value1, value2, "channelType");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountIsNull() {
            addCriterion("`max_total_amount` is null");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountIsNotNull() {
            addCriterion("`max_total_amount` is not null");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountEqualTo(Long value) {
            addCriterion("`max_total_amount` =", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountNotEqualTo(Long value) {
            addCriterion("`max_total_amount` <>", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountGreaterThan(Long value) {
            addCriterion("`max_total_amount` >", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountGreaterThanOrEqualTo(Long value) {
            addCriterion("`max_total_amount` >=", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountLessThan(Long value) {
            addCriterion("`max_total_amount` <", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountLessThanOrEqualTo(Long value) {
            addCriterion("`max_total_amount` <=", value, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountIn(List<Long> values) {
            addCriterion("`max_total_amount` in", values, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountNotIn(List<Long> values) {
            addCriterion("`max_total_amount` not in", values, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountBetween(Long value1, Long value2) {
            addCriterion("`max_total_amount` between", value1, value2, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andMaxTotalAmountNotBetween(Long value1, Long value2) {
            addCriterion("`max_total_amount` not between", value1, value2, "maxTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountIsNull() {
            addCriterion("`current_total_amount` is null");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountIsNotNull() {
            addCriterion("`current_total_amount` is not null");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountEqualTo(Long value) {
            addCriterion("`current_total_amount` =", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountNotEqualTo(Long value) {
            addCriterion("`current_total_amount` <>", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountGreaterThan(Long value) {
            addCriterion("`current_total_amount` >", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountGreaterThanOrEqualTo(Long value) {
            addCriterion("`current_total_amount` >=", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountLessThan(Long value) {
            addCriterion("`current_total_amount` <", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountLessThanOrEqualTo(Long value) {
            addCriterion("`current_total_amount` <=", value, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountIn(List<Long> values) {
            addCriterion("`current_total_amount` in", values, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountNotIn(List<Long> values) {
            addCriterion("`current_total_amount` not in", values, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountBetween(Long value1, Long value2) {
            addCriterion("`current_total_amount` between", value1, value2, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andCurrentTotalAmountNotBetween(Long value1, Long value2) {
            addCriterion("`current_total_amount` not between", value1, value2, "currentTotalAmount");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeIsNull() {
            addCriterion("`total_amount_last_time` is null");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeIsNotNull() {
            addCriterion("`total_amount_last_time` is not null");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeEqualTo(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` =", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeNotEqualTo(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` <>", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeGreaterThan(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` >", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` >=", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeLessThan(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` <", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("`total_amount_last_time` <=", value, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeIn(List<Date> values) {
            addCriterionForJDBCDate("`total_amount_last_time` in", values, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeNotIn(List<Date> values) {
            addCriterionForJDBCDate("`total_amount_last_time` not in", values, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("`total_amount_last_time` between", value1, value2, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andTotalAmountLastTimeNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("`total_amount_last_time` not between", value1, value2, "totalAmountLastTime");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountIsNull() {
            addCriterion("`max_order_amount` is null");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountIsNotNull() {
            addCriterion("`max_order_amount` is not null");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountEqualTo(Long value) {
            addCriterion("`max_order_amount` =", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountNotEqualTo(Long value) {
            addCriterion("`max_order_amount` <>", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountGreaterThan(Long value) {
            addCriterion("`max_order_amount` >", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountGreaterThanOrEqualTo(Long value) {
            addCriterion("`max_order_amount` >=", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountLessThan(Long value) {
            addCriterion("`max_order_amount` <", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountLessThanOrEqualTo(Long value) {
            addCriterion("`max_order_amount` <=", value, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountIn(List<Long> values) {
            addCriterion("`max_order_amount` in", values, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountNotIn(List<Long> values) {
            addCriterion("`max_order_amount` not in", values, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountBetween(Long value1, Long value2) {
            addCriterion("`max_order_amount` between", value1, value2, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMaxOrderAmountNotBetween(Long value1, Long value2) {
            addCriterion("`max_order_amount` not between", value1, value2, "maxOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountIsNull() {
            addCriterion("`min_order_amount` is null");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountIsNotNull() {
            addCriterion("`min_order_amount` is not null");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountEqualTo(Long value) {
            addCriterion("`min_order_amount` =", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountNotEqualTo(Long value) {
            addCriterion("`min_order_amount` <>", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountGreaterThan(Long value) {
            addCriterion("`min_order_amount` >", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountGreaterThanOrEqualTo(Long value) {
            addCriterion("`min_order_amount` >=", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountLessThan(Long value) {
            addCriterion("`min_order_amount` <", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountLessThanOrEqualTo(Long value) {
            addCriterion("`min_order_amount` <=", value, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountIn(List<Long> values) {
            addCriterion("`min_order_amount` in", values, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountNotIn(List<Long> values) {
            addCriterion("`min_order_amount` not in", values, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountBetween(Long value1, Long value2) {
            addCriterion("`min_order_amount` between", value1, value2, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinOrderAmountNotBetween(Long value1, Long value2) {
            addCriterion("`min_order_amount` not between", value1, value2, "minOrderAmount");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopIsNull() {
            addCriterion("`min_time_stop` is null");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopIsNotNull() {
            addCriterion("`min_time_stop` is not null");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop` =", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopNotEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop` <>", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopGreaterThan(Date value) {
            addCriterionForJDBCTime("`min_time_stop` >", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop` >=", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopLessThan(Date value) {
            addCriterionForJDBCTime("`min_time_stop` <", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopLessThanOrEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop` <=", value, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopIn(List<Date> values) {
            addCriterionForJDBCTime("`min_time_stop` in", values, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopNotIn(List<Date> values) {
            addCriterionForJDBCTime("`min_time_stop` not in", values, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopBetween(Date value1, Date value2) {
            addCriterionForJDBCTime("`min_time_stop` between", value1, value2, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopNotBetween(Date value1, Date value2) {
            addCriterionForJDBCTime("`min_time_stop` not between", value1, value2, "minTimeStop");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationIsNull() {
            addCriterion("`min_time_stop_duration` is null");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationIsNotNull() {
            addCriterion("`min_time_stop_duration` is not null");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` =", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationNotEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` <>", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationGreaterThan(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` >", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` >=", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationLessThan(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` <", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationLessThanOrEqualTo(Date value) {
            addCriterionForJDBCTime("`min_time_stop_duration` <=", value, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationIn(List<Date> values) {
            addCriterionForJDBCTime("`min_time_stop_duration` in", values, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationNotIn(List<Date> values) {
            addCriterionForJDBCTime("`min_time_stop_duration` not in", values, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationBetween(Date value1, Date value2) {
            addCriterionForJDBCTime("`min_time_stop_duration` between", value1, value2, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andMinTimeStopDurationNotBetween(Date value1, Date value2) {
            addCriterionForJDBCTime("`min_time_stop_duration` not between", value1, value2, "minTimeStopDuration");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNull() {
            addCriterion("`update_time` is null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNotNull() {
            addCriterion("`update_time` is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeEqualTo(Date value) {
            addCriterion("`update_time` =", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotEqualTo(Date value) {
            addCriterion("`update_time` <>", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThan(Date value) {
            addCriterion("`update_time` >", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("`update_time` >=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThan(Date value) {
            addCriterion("`update_time` <", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
            addCriterion("`update_time` <=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIn(List<Date> values) {
            addCriterion("`update_time` in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotIn(List<Date> values) {
            addCriterion("`update_time` not in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
            addCriterion("`update_time` between", value1, value2, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
            addCriterion("`update_time` not between", value1, value2, "updateTime");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}